#include <iostream>
#include <vector>
#include <stack>

bool Check(int n,  std::vector<int> popped) {
    std::stack<int> s;
    int cur = 0;
    for(int i=1;i<=n;) {
        if(s.empty()) {
            s.push(i++);
            continue;
        }

        int top = s.top();
        if (top == popped[cur]) {
            s.pop();
            cur++;
        }else {
            s.push(i++);
        }
    }
    while (!s.empty()) {
        int top = s.top();
        if (top == popped[cur]) {
            s.pop();
            cur++;
        }
        else {
            return false;
        }
    }

    return true;


}

/**
 * 出栈合法性
 */
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    while(true) {
        int n;
        std::cin >> n;
        if (n == 0) {
            break;
        }

        std::vector<int> popped(n);
        for (int i = 0; i < n; i++) {
            std::cin >> popped[i];
        }

        if (Check(n, popped)) {
            std::cout << "Yes\n";
        }else {
            std::cout << "No\n";
        }
    }


    return 0;
}